Adding a key column to a table to be replicated

ABSTRACT

Techniques are disclosed for adding a key column to a table to be replicated, where the key column stores key values for use in replication. In one embodiment, a request is received to add a table to a replication domain, such that the table is replicated from a first database server to at least a second database server. Key values are generated for both existing records and new records subsequently requested to be inserted into the table, respectively. Each generated key value is unique across the replication domain. Further, the key column may be added to the table without requiring exclusive access to the table.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 13/194,393, filed Jul. 29, 2011. The aforementioned relatedpatent application is herein incorporated by reference in its entirety.

BACKGROUND

Databases are computerized information storage and retrieval systems. Arelational database management system is a computer database managementsystem (DBMS) that uses relational techniques for storing and retrievingdata. An object-oriented programming database is a database that iscongruent with the data defined in object classes and subclasses.

Regardless of the particular architecture, a requesting entity (e.g., anapplication or the operating system) in a DBMS requests access to aspecified database by issuing a database access request. Such requestsmay include, for instance, simple catalog lookup requests ortransactions and combinations of transactions that operate to read,change and add specified records in the database. These requests areoften made using high-level query languages such as Structured QueryLanguage (SQL). Upon receiving such a request, the DBMS may execute therequest against a corresponding database, and return any result of theexecution to the requesting entity.

SUMMARY

Embodiments of the invention provide a method, product and system forperforming an operation that includes receiving a request to add a tableto a replication domain, such that the table is replicated from a firstdatabase server to at least a second database server, where the tableincludes at least a first record. The operation also includes,responsive to the request, generating a key value for the first recordon the first database server. Subsequent to receiving the request, asecond record to be inserted into the table on the first database serveris received. A key value for the second record on the first databaseserver is then generated. Each generated key value is unique across thereplication domain. Further, a column is added to the table to store thegenerated key values. The column is added without requiring exclusiveaccess to the table.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited aspects are attained andcan be understood in detail, a more particular description ofembodiments of the invention, briefly summarized above, may be had byreference to the appended drawings.

It is to be noted, however, that the appended drawings illustrate onlytypical embodiments of this invention and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments.

FIG. 1 is a block diagram illustrating a system for adding a key columnto a table to be replicated, according to one embodiment of theinvention.

FIG. 2 illustrates counters maintained by a database management systemfor use in generating key values, according to one embodiment of theinvention.

FIG. 3 illustrates a table for which key values are to be generated,according to one embodiment of the invention.

FIG. 4 is a flowchart depicting a method for adding a key column to atable to be replicated, according to one embodiment of the invention.

FIG. 5 is a flowchart depicting a method for generating a key valueafter a server restart, according to one embodiment of the invention.

FIGS. 6A-6C depict databases at different stages of replication,according to one embodiment of the invention.

DETAILED DESCRIPTION

Embodiments of the invention provide techniques for adding a key columnto a table to be replicated, where the key column stores key values thatare unique across a replication domain that includes at least a firstdatabase server and a second database server. The replication domain isa set of all database servers that are configured to communicate withone another to replicate data based on a replication configuration,which may be user-defined. The replication configuration specifies whichtables should be replicated and which subset of database servers in thereplication domain the tables should be replicated to. One embodiment ofthe invention provides a database management system (DBMS) executing onthe first database server. The DBMS receives a request to add a table tothe replication domain, such that the table is replicated from the firstdatabase server to at least the second database server, and where thetable includes at least a first record. In response to the request, theDBMS generates a key value for the first record on the first databaseserver. Subsequent to receiving the request, the DBMS receives a secondrecord to be inserted into the table on the first database server. TheDBMS also generates a key value for the second record on the firstdatabase server. Each generated key value is unique across thereplication domain. In other words, each key value will not conflictwith the key value of any other row in the replication domain. Further,the key values are generated such that the key column may be added tothe table without requiring exclusive access to the table. Accordingly,access to the table by database applications is not disrupted.

In the following, reference is made to embodiments of the invention.However, it should be understood that the invention is not limited tospecific described embodiments. Instead, any combination of thefollowing features and elements, whether related to differentembodiments or not, is contemplated to implement and practice theinvention. Furthermore, although embodiments of the invention mayachieve advantages over other possible solutions and/or over the priorart, whether or not a particular advantage is achieved by a givenembodiment is not limiting of the invention. Thus, the followingaspects, features, embodiments and advantages are merely illustrativeand are not considered elements or limitations of the appended claimsexcept where explicitly recited in a claim(s). Likewise, reference to“the invention” shall not be construed as a generalization of anyinventive subject matter disclosed herein and shall not be considered tobe an element or limitation of the appended claims except whereexplicitly recited in a claim(s).

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

Embodiments of the invention may be provided to end users through acloud computing infrastructure. Cloud computing generally refers to theprovision of scalable computing resources as a service over a network.More formally, cloud computing may be defined as a computing capabilitythat provides an abstraction between the computing resource and itsunderlying technical architecture (e.g., servers, storage, networks),enabling convenient, on-demand network access to a shared pool ofconfigurable computing resources that can be rapidly provisioned andreleased with minimal management effort or service provider interaction.Thus, cloud computing allows a user to access virtual computingresources (e.g., storage, data, applications, and even completevirtualized computing systems) in “the cloud,” without regard for theunderlying physical systems (or locations of those systems) used toprovide the computing resources.

Typically, cloud computing resources are provided to a user on apay-per-use basis, where users are charged only for the computingresources actually used (e.g. an amount of storage space consumed by auser or a number of virtualized systems instantiated by the user). Auser can access any of the resources that reside in the cloud at anytime, and from anywhere across the Internet. In context of the presentinvention, a user may access applications (e.g., a DBMS) or related dataavailable in the cloud. For example, the DBMS could execute on acomputing system in the cloud and provide access to one or more tables.The one or more tables may be stored at a storage location in the cloud.Doing so allows the one or more tables to be accessed from any computingsystem attached to a network connected to the cloud (e.g., theInternet).

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

FIG. 1 is a block diagram illustrating a system 100 for adding a keycolumn to a table to be replicated, according to one embodiment of theinvention. The networked system 100 includes a computer 102. Thecomputer 102 may also be connected to other computers via a network 130.In general, the network 130 may be a telecommunications network and/or awide area network (WAN). In a particular embodiment, the network 130 isthe Internet.

The computer 102 generally includes a processor 104 connected via a bus112 to a memory 106, a network interface device 110, a storage 108, aninput device 114, and an output device 116. The computer 102 isgenerally under the control of an operating system. Examples ofoperating systems include UNIX, versions of the Microsoft Windows®operating system, and distributions of the Linux® operating system. Moregenerally, any operating system supporting the functions disclosedherein may be used. The processor 104 is included to be representativeof a single CPU, multiple CPUs, a single CPU having multiple processingcores, and the like. Similarly, the memory 106 may be a random accessmemory. While the memory 106 is shown as a single identity, it should beunderstood that the memory 106 may comprise a plurality of modules, andthat the memory 106 may exist at multiple levels, from high speedregisters and caches to lower speed but larger DRAM chips. The networkinterface device 110 may be any type of network communications deviceallowing the computer 102 to communicate with other computers via thenetwork 130.

The storage 108 may be a persistent storage device. Although the storage108 is shown as a single unit, the storage 108 may be a combination offixed and/or removable storage devices, such as fixed disc drives, solidstate drives, floppy disc drives, tape drives, removable memory cards oroptical storage. The memory 106 and the storage 108 may be part of onevirtual address space spanning multiple primary and secondary storagedevices.

The input device 114 may be any device for providing input to thecomputer 102. For example, a keyboard and/or a mouse may be used. Theoutput device 116 may be any device for providing output to a user ofthe computer 102. For example, the output device 116 may be anyconventional display screen or set of speakers. Although shownseparately from the input device 114, the output device 116 and inputdevice 114 may be combined. For example, a display screen with anintegrated touch-screen may be used.

As shown, the memory 106 of the computer 102 includes a databasemanagement system (DBMS) 150 configured to manage a database 154 ₁stored in the storage 108 of the computer 102. The memory 106 of thecomputer 102 also includes an application 152 accessing the database 154₁ via the DBMS 150. In other embodiments, the application 152 executeson a different computer that communicates with the computer 102 via thenetwork 130. The DBMS 150 may also communicate with other databasemanagement systems executing on other computers via the network 130,where each of the other database management systems manage a respectivedatabase 154 ₂, 154 ₃. A computer on which a database management systemis executing may also be referred to herein as a database server. Forclarity, only the databases 154 ₂, 154 ₃—and not the other databasemanagement systems or the other computers—are shown in FIG. 1.

In one embodiment, the DBMS 150 may communicate with the other databasemanagement systems to provide additional functionality such asreplication. Replication refers to a mechanism for maintainingsynchronized copies of data across multiple database servers. Changes tothe data—such as inserts, updates, and deletes—may be replicated byretrieving logged transactions on a source database server andtransmitting the logged transactions to be executed on one or moretarget servers as regular transactions. Replication may often requirethe DBMS 150 to be able to uniquely identify each record in thereplication domain. For example, if a record is replicated from a firstdatabase server to a second database server and a third database server,each replicated copy of the record is to be uniquely identified,relative to any replicated copy of any record (as opposed to just anyreplicated copy of the replicated record) in the replication domain.

To this end, upon receiving a request to add an existing table to areplication domain, the DBMS 150 may generate key values 160 for eachrecord in the table, according to a first algorithm 162. For each recordthat is subsequently inserted into the table, the DBMS 150 may generatekey values according to a second algorithm 164, to avoid collisions withkey values previously generated for the table. A key value collisionoccurs when two records in the replication domain have identical keyvalues. A key value collision may also be referred to as a key valueconflict. The generated key values are stored in a key column that isadded to the table. At least in some embodiments, the first algorithm162 does not require the DBMS 150 to have exclusive access to the table.Accordingly, the table may be added to the replication domain withoutdisrupting access to the table by the application 152. At least in someembodiments, the second algorithm uses one or more counters 158maintained by the DBMS 150. Depending on the embodiment, each counter158 may be specific to a respective DBMS or shared by multiple databasemanagement systems. In other words, each DBMS may maintain a localcounter or multiple database management systems may share a single,global counter.

FIG. 2 illustrates the counters 158 of FIG. 1, according to oneembodiment of the invention. As shown, counters include a first counter208 and a second counter 210. Each counter 208, 210 has an associatedcounter identifier 202, an associated policy 204, and an associatedvalue 206. In this particular example, the policy for the first counter208 specifies to increment the first counter 208 every second (the“increment duration”). The increment duration refers to a time periodbetween two incrementing actions. The value of the first counter is7200, which represents that two hours have elapsed since the firstcounter had a value of zero. The policy for the second counter 210specifies to increment the second counter 210 upon every record beinginserted into the database 154 ₁. The value of the second counter 210 is11500, which represents that 11,500 insertions have occurred since thesecond counter 210 had a value of zero. In one embodiment, each counter208, 210 overflows to zero.

As shown, the policy for the first counter 208 also specifies to log thefirst counter 208 every minute (the “logging duration”) and to increasethe first counter 208 by sixty upon a restart of the DBMS 150. Thelogging duration refers to the time period between two logging actions.At least in some embodiments, the value of sixty is obtained by dividingthe logging duration by the increment duration. By increasing the firstcounter 208 by sixty upon restart following a server crash, the DBMS 150may avoid generating key values that collide with key values generatedprior to the server crash. Further, the policies described herein may betailored to suit the needs of a particular case. For example, in analternative embodiment, the first counter 208 is incremented everyhalf-second, logged every five minutes, and increased by three hundredupon server restart.

FIG. 3 illustrates the table 156 of FIG. 1, according to one embodimentof the invention. As shown, the table has an associated table identifier316. The table identifier 316 uniquely identifies the table relative toother tables stored on the computer 102. Further, the computer 102 (onwhich the table is stored) has an associated server node identifier 318.The server node identifier uniquely identifies the computer 102 relativeto other computers in the replication domain. The server node identifiermay also be referred to herein as a node identifier. In this particularexample, the table identifier 316 stores the value of “123”, and theserver node identifier stores the value of “5”.

As shown, each record in the table includes an employee identifier 302,a first name 304, and a last name 306. Each record in the table may alsoinclude other fields, such as date of birth, social security number, jobtitle, salary grade, employment start date, etc. For clarity, the otherfields are not shown in FIG. 3. Each record may also have an associatedrow identifier 310, which includes a page number 312 and a slot number314. The row identifier 310 for each record represents a physicallocation of the record in the database 154 ₁. The row identifiers aremaintained by the DBMS 150 and may be stored in one or more systemtables in the database 154 ₁. As used herein, a system table refers to atable configured to be accessible only with administrative privileges tothe database 154 ₁. Collectively, the table identifier 316 and the rowidentifier 310 characterize the physical location of the record in thedatabase 154 ₁.

As shown, the table contains a first record having an employeeidentifier of “001” and representing employee Adam White. The firstrecord is stored at slot number 1 of page number 15 in the database 154₁. The table contains a second record having an employee identifier of“002” and representing employee Bob Smith. The second record is storedat slot number 2 of page number 15 in the database 154 ₁. The table mayalso contain additional records representing other employees. Forclarity, the additional records are not shown in FIG. 3.

Assume that the DBMS 150 receives a request to add the table to thereplication domain, such that the table is replicated from the database154 ₁ to one or more target databases 154 ₂, 154 ₃ on the network 130.Replicating the table to the target databases 154 ₂, 154 ₃ includescopying the table to the target databases 154 ₂, 154 ₃ and furtherincludes adding a key column to each copy of the table (including theoriginal copy), where the key column stores key values that are uniqueacross the replication domain. The key column is used internally by theDBMS 150 in managing and/or maintaining the replicated table. Dependingon the embodiment, the table may be copied prior to, concurrently with,or subsequent to the key values being generated. In one embodiment, thekey column of each database 154 ₁, 154 ₂, 154 ₃ is independentlygenerated by the DBMS managing the respective database 154 ₁, 154 ₂, 154₃. Further, depending on the embodiment, when the existing rows of thetable are replicated to the target databases 154 ₂, 154 ₃, the targetdatabases 154 ₂ 154 ₃ may be configured treat the replicated rows aseither existing rows or new rows for the purposes of key valuegeneration. In other words, the other databases 154 ₂, 154 ₃ may useeither the first algorithm or the second algorithm for generating keyvalues for the rows already existing in the table that is beingreplicated. Treating the replicated rows as existing rows may improvethe performance of replication at least in some cases.

In one embodiment, during replication, the DBMS 150 generates a keyvalue for each existing record 324 in the table. As described above, thekey value for each existing record 324 in the table is generatedaccording to a first algorithm. In one embodiment, the first algorithmspecifies to generate the key value for each existing record based onone or more components. In a particular embodiment, the components usedby first algorithm include the server node identifier 318, the tableidentifier 316, and the row identifier 310 for the respective record,where the row identifier 310 includes the page number 312 and the slotnumber 314.

For example, the key value for the record representing Adam White may begenerated by concatenating the server node identifier of “5” (0x05), thetable identifier of “123” (0x7B), the page number of “15” (0x0F), andthe slot number of “1” (0x01) together into a single bitstring. Supposethat the server node identifier is four bytes long, the table identifieris four bytes long, the page number is three bytes long, and the slotnumber is one byte long. Because two hexadecimal digits represents abyte, the single bitstring may then be given by the hexadecimal value of00000005 0000007B 00001501. Those skilled in the art will recognize thatthe byte lengths are merely exemplary and may be tailored to suit theneeds of a particular case. Further, the order in which the componentsare concatenated may also be tailored to suit the needs of a particularcase.

Similarly, the key value for the record representing Bob Smith may begenerated by concatenating the server node identifier of “5”, the tableidentifier of “123”, the page number of “15”, and the slot number of “2”together into a single bitstring. The single bitstring may be given bythe hexadecimal value of 00000005 0000007B 00001502. Key values forother existing records may also be generated in a similar manner.Accordingly, key values that are unique across the replication domainmay be generated for existing records. In particular, using the servernode identifier in generating the key values allows replicated copies ofeach record to have a distinct key value, because each replicated copyis stored on a respective server with a distinct server node identifier.For example, if the record representing Adam White is replicated to adatabase server having a server node identifier of “12” (0x0C), the keyvalue for the replicated record on that database server may begin withthe hexadecimal value of 0000000C rather than 00000005. Further, atleast in some embodiments, the first algorithm also specifies that thekey value for a record is to remain unchanged, even if the record ismoved to a new physical location (e.g., as a result of an update). Doingso avoids increasing complexity and reducing performance associated withperforming updates to the table.

In one embodiment, the DBMS 150 may add a column to the table using analter command, where the column is used for storing the key values. Theadded column may also be referred to herein as a key column. The altercommand may be a normal alter command or an in-place alter command. Thenormal alter command is configured to alter a schema of a table bycreating a new table having the altered schema, copying data from the(old) table to the new table, and deleting the old table. For example,the normal alter command may be used in conjunction with one or morekeywords to request the DBMS 150 to programmatically generate uniquevalues for a new column, without any further input. An example of such akeyword is the ROWIDS keyword supported by IBM® Informix®.

In one embodiment, the in-place alter command is configured to alter aschema of a table while deferring changing the physical representationof rows of the table until the rows are updated responsive to anysubsequent update command. Unlike the normal alter command, the in-placealter command does not require exclusive access to the table. Especiallyin cases where the old table stores vast amounts of data, copying datafrom the old table to the new table can be costly in terms ofperformance. On the other hand, the DBMS 150 may require certainpreconditions to be met in order for the in-place alter command to beused. For example, the DBMS 150 may require that the ROWIDS keyword isnot present when using the in-place alter command. By generating keyvalues using only static values (i.e., the server node identifier andthe table identifier) and row identifiers, the ROWIDS keyword need notbe present, and hence the in-place alter command may be used to add thecolumn to the table. Accordingly, the existing table may be replicatedwithout disrupting access to the table by one or more applications.Performance of the DBMS 150 and/or of the applications may be improvedas a result.

Further, at least in some embodiments, the added column is a shadowcolumn, also referred to as a hidden column. As used herein, a shadowcolumn (or hidden column) refers to a column that is accessible onlywith administrative privileges to the database 154 ₁. Using a shadowcolumn to store the key values prevents the undesirable scenario ofapplications accessing and/or relying on the key values, which are notintended for consumption by the applications. By hiding the key valuesfrom the applications, each replicated copy of a table appears as anidentical copy to the applications.

Assume that after the existing table is successfully replicated to oneor more additional database servers, the DBMS 150 receives a new record326 to be added to the table. As shown, the new record 326 has anemployee identifier of “050” and represents employee William Jones. Toprepare the new record 326 for replication, the DBMS 150 generates a keyvalue for the new record 326. As described above, the key value for thenew record 326 is generated according to a second algorithm. At least insome embodiments, the second algorithm is different from the firstalgorithm—in other words, the algorithm for generating key values forexisting records 324 is different from the algorithm for generating keyvalues for new records 326. A “new” record refers to any record insertedafter the existing table is successfully replicated. By using thedifferent algorithms disclosed herein, the DBMS 150 may generate the keyvalues more efficiently at least in some cases, such as by using anin-place alter, which is further described below. In some alternativeembodiments, however, the same algorithm may be used to generate keyvalues for both existing records 324 and new records 326.

In one embodiment, the second algorithm specifies to generate the keyvalue for each new record 326 based on one or more components. In aparticular embodiment, the components used by the second algorithminclude the server node identifier 318, the first counter 208, thesecond counter 210, and a collision avoidance value 322. The firstcounter 208 may be referred to as a time counter, and the second counter210 may be referred to as an insert counter. The time counter providesan ability to efficiently recover from a restart of the DBMS 150, andthe insert counter makes efficient use of memory space in reducingcounter overflows. The second algorithm uses both counters—as opposed toa single one—as a tradeoff between counter overflow avoidance andability to recover from a server restart. Accordingly, the benefits ofboth counters may be had to some extent. The tradeoff may be tailored tosuit the needs of a particular case, and in other embodiments, a singlecounter or more than two counters may be used.

In one embodiment, the collision avoidance value 322 may be defined by adeveloper of the DBMS 150, based on knowledge of the specificimplementation of the DBMS 150. In particular, the DBMS 150 may assignslot numbers according to a predefined base index. If the base index is1, the DBMS 150 only assigns slot numbers of 1 or greater. Moregenerally, if the base index is n, the DBMS 150 only assigns slotnumbers of n or greater. Any value that the DBMS 150 will not assign asa slot number may be used as a collision avoidance value. For example,if the base index is n, then the value of n−1 (e.g., 0 where n=1) may beused as a collision avoidance value. Using collision avoidance value(s)according to the techniques disclosed herein may prevent key values ofnew records from conflicting with key values of existing records in thetable.

Further, at least in some environments, key value collisions may beprevented or reduced by using the counters—rather than the physicallocation of the record that is used by the first algorithm—in generatingkey values for new records. For example, assume that the physicallocation of the record is used in generating key values for new recordsas well as for existing records. Assume also that the key values remainunchanged, even if a new or existing record is subsequently moved to adifferent physical location (e.g., as a result of an update). If thephysical location of the record is also used in generating key valuesfor new records, collisions may occur because the new record may occupya physical location previously occupied by another record (for which akey value is previously generated using the first algorithm). By usingthe counters maintained by each DBMS for generating key values for newrecords, such collisions may be avoided.

Assume instead that inserts are only allowed on a single copy of thetable in the replication domain and that the inserts are replicated toat least one other copy of the table in the replication domain. In suchenvironments, the physical location of the record may be used ingenerating key values for new records, without causing collisionsbetween copies of the table. However, if deletions occur on the table,multiple records may occupy the same physical location over time. Dataintegrity issues may result if copies of the deleted records aremaintained in a data warehouse. By using counters maintained by eachDBMS for generating key values for new records, the collisions betweencopies of the table and the data integrity issues may be avoided.

In one embodiment, to generate the key value for the record representingWilliam Jones, the DBMS 150 may concatenate the server node identifierof “5” (0x05), the first counter value of “7200” (0x1C20), the secondcounter value of “11500” (0x2CEC), and a collision avoidance value of“0” (0x00) together into a single bitstring. Suppose that the servernode identifier is four bytes long, the first counter is four byteslong, the second counter is three bytes long, and the collisionavoidance value is one byte long. The single bitstring may then be givenby the hexadecimal value of 00000005 00001C20 002CEC00.

Those skilled in the art will recognize that the byte lengths of thecomponents used by the second algorithm are merely exemplary and may betailored to suit the needs of a particular case. Further, the bytelengths of the counters and the collision avoidance value may—but neednot necessarily—correspond to the byte lengths of the components used bythe first algorithm (namely, the table identifier, page number, and slotnumber). For example, in an alternative embodiment, the first countermay be two bytes long, and the second counter may be five bytes long. Atleast in some embodiments, to avoid collisions, only the collisionavoidance value is required to have the same byte length as the slotnumber. Further, to avoid collisions, the byte lengths of the countersmay be tailored based on an anticipated frequency of inserts in thereplication domain. For example, if the first counter is incrementedevery second and the second counter is three bytes long (which canrepresent up to 2̂24 or 16,777,216 insertions), then collisions may occurif more than 2̂24 insertions occur in a given second. In addition, theorder in which the components used by the second algorithm areconcatenated may also be tailored to suit the needs of a particular caseand need not necessarily correspond to the order in which the componentsused by the first algorithm are concatenated.

Further, although the example described in conjunction with FIG. 3 ispresented in a context of storing employee data, such is not intended tobe limiting of the invention. In other words, the techniques disclosedherein may be applied to tables that store any type of data. Further,other ways of generating the key values are broadly contemplated. Forexample, instead of concatenating components of the key value to formthe single bitstring, the components may be interleaved to form thesingle bitstring. Additionally or alternatively, a predefined functionmay be applied to one or more of the components when forming the singlebitstring. For example, a counter value may be multiplied by two for usein forming the single bitstring.

Although embodiments are described herein with reference to generatingkey values for records to be inserted into the table, using thecomponents of the node identifier, the counters, and the collisionavoidance value, other embodiments are broadly contemplated. Forexample, in an alternative embodiment, some or all of the components maybe substituted with a universally unique identifier (UUID) or a sequencegenerator. In particular, the key values may be generated based on theUUID (or sequence generator) and the collision avoidance value. On theother hand, using counters may be more efficient than using UUIDs orsequence generators at least in some cases.

FIG. 4 is a flowchart 400 depicting a method for adding a key column toa table to be replicated, according to one embodiment of the invention.As shown, the method 400 begins at step 410, where the DBMS 150 receivesa request to add a table to a replication domain, such that the table isreplicated from a first database server to at least a second databaseserver, where the table includes at least a first record. At step 420,responsive to the request, the DBMS 150 generates a key value for thefirst record on the first database server. At step 430, subsequent toreceiving the request, the DBMS 150 receives a second record to beinserted into the table on the first database server. At step 440, theDBMS 150 generates a key value for the second record on the firstdatabase server. Each generated key value is unique across thereplication domain. Further, the DBMS 150 adds a column to the table tostore the generated key values. At least in some embodiments, the columnis added without requiring exclusive access to the table. After the step440, the method 400 terminates.

FIG. 5 is a flowchart 500 depicting a method for generating a key valueafter a server restart, according to one embodiment of the invention. Asdescribed above, in some embodiments, the DBMS 150 maintains a firstcounter that is incremented every second (the increment duration) andlogged every minute (the logging duration) and a second counter that isincremented upon every record insertion. As shown, the method 500 beginsat step 510, where upon the logging duration elapsing, the DMBS 150 logsthe first counter. For example, the first counter may be stored into asystem table in the database 154 ₁. At step 520, the DBMS 150 isrestarted. The DBMS 150 then retrieves the logged first counter (step530) and increases the retrieved counter by at least the loggingduration divided by the increment duration (step 540).

In one embodiment, the DBMS 150 then maintains the counter starting atthe increased value. For example, if the most recently logged value forthe first counter is “7200”, upon a restart, the DBMS 150 maintains thefirst counter after initializing the first counter to “7260” (the loggedvalue of 7200 plus sixty). Put another way, one second following therestart of the DBMS 150, the first counter is incremented to “7261”rather than “7201”. At step 550, the DBMS 150 receives a new record tobe inserted into the table on the first database server. At step 560,the DBMS 150 generates a key value for the new record, based on thecounter. After the step 560, the method 500 terminates.

FIGS. 6A-6C depict the databases 154 ₁, 154 ₂ at different stages ofreplication, according to one embodiment of the invention. As shown inFIG. 6A, the server 154 ₁ has a node identifier of 5 and stores, in anemployee table, a record 602 ₁ representing Adam White. Suppose that theemployee table has a table number of 123. Upon receiving a request toreplicate the employee table to the database 154 ₂, having a nodeidentifier of 7, the record 602 ₁ is replicated to the database 154 ₂,to form a replicated record 602 ₂. Suppose that the record 602 ₁ isstored at page number of 15 and slot number of 1 of the first database154 ₁, and suppose that the replicated record 602 ₂ is stored at pagenumber of 16 and slot number of 3 of the second database 154 ₂.

In one embodiment, assuming that the record 602 ₁ existed at the time ofthe request, the database management systems for the databases 154 ₁,154 ₂ each generate a key value for the respective copy of the record,based on the first algorithm. For example, as shown in FIG. 6B, the DBMSfor the first database 154 ₁ generates a key value 604 ₁ that includesthe node identifier of 5, the table number of 123, the page number of15, and the slot number of 1. The DBMS for the second database 154 ₂generates a key value 604 ₂ that includes the node identifier of 7, thetable number of 123, the page number of 16, and the slot number of 3.Although embodiments have been described herein with reference to thematching table numbers in the databases 154 ₁, 154 ₂, in otherembodiments, the table numbers need not necessarily match.

In one embodiment, assume that the record 602 ₁ did not exist at thetime of the request but is instead requested to be newly addedsubsequent to replicating the employee table to the database 154 ₂. Insuch a case, the record 602 ₁ is also replicated to the database 154 ₂(as shown in FIG. 6A). Further, the database management systems for thedatabases 154 ₁, 154 ₂ each generate a key value for the respective copyof the record, based on the second algorithm. For example, as shown inFIG. 6C, the DBMS for the first database 154 ₁ generates a key value 606₁ that includes the node identifier of 5, a first counter value of 7000,a second counter value of 11000, and a collision avoidance value of 0.The DBMS for the second database 164 ₂ generates a key value 606 ₂ thatincludes the node identifier of 7, a first counter value of 5000, asecond counter value of 6500, and a collision avoidance value of 0. Asdescribed above, depending on the embodiment, the counter values used bythe database management systems may originate from the single,globally-maintained counter or from multiple counters, each locallymaintained by a respective DBMS.

Embodiments of the invention provide techniques for adding a key columnto a table to be replicated, where the key column stores key values thatare unique across a replication domain. One embodiment of the inventionprovides a database management system (DBMS) executing on a firstdatabase server. The DBMS receives a request to add a table to thereplication domain, such that the table is replicated from the firstdatabase server to at least a second database server. The DBMS generateskey values for both existing records in the table and new recordssubsequently requested to be inserted into the table, respectively. Eachgenerated key value is unique across the replication domain. Further,the key column may be added to the table without requiring exclusiveaccess to the table. Accordingly, the table may be added to thereplication domain without disrupting access to the table by databaseapplications.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

What is claimed is:
 1. A computer-implemented method, comprising:receiving a request to add a table to a replication domain, such thatthe table is replicated from a first database server to at least asecond database server, wherein the table includes at least a firstrecord; responsive to the request, generating a key value for the firstrecord on the first database server; subsequent to receiving therequest, receiving a second record to be inserted into the table on thefirst database server; and by operation of one or more computerprocessors, generating a key value for the second record on the firstdatabase server; wherein each generated key value is unique across thereplication domain, wherein a column is added to the table to store thegenerated key values, and wherein the column is added without requiringexclusive access to the table.
 2. The computer-implemented method ofclaim 1, wherein the key value for the first record on the firstdatabase server is generated based on a table identifier of the table, arow identifier of the first record, and a node identifier of the firstdatabase server.
 3. The computer-implemented method of claim 2, whereinthe key value for the second record on the first database server isgenerated based on a first counter, a second counter, and the nodeidentifier of the first database server, and wherein each counter ismaintained by the first database server.
 4. The computer-implementedmethod of claim 3, wherein the key value for the first record isgenerated by concatenating the table identifier, the row identifier, andthe node identifier, and wherein the key value for the second record isgenerated by concatenating the first counter, the second counter, andthe node identifier.
 5. The computer-implemented method of claim 4,wherein the row identifier includes a page number component and a slotnumber component, wherein the slot number component contains a non-zerovalue, wherein the key value for the second record contains one or morebits corresponding to the slot number component and containing a zerovalue to prevent collision with any existing record in the table,wherein the column comprises a shadow column, and wherein the column isadded via an in-place alter command.
 6. The computer-implemented methodof claim 1, wherein the first database server is configured to incrementthe first counter upon a first period of time elapsing, and wherein thefirst database server is further configured to increment the secondcounter upon a row being inserted into the first database server,wherein the first counter is logged upon a second period of timeelapsing, and wherein upon restarting the first database server, thelogged first counter is retrieved and increased by at least the secondperiod of time divided by the first period of time, to prevent collisionwith any key value generated prior to restarting the first databaseserver.
 7. The computer-implemented method of claim 1, wherein a keyvalue is generated for each existing record in the table, based on atable identifier of the table, a row identifier of the respective,existing record, and a node identifier of the first database server, andwherein a key value is generated for each new record to be inserted intothe table, based on a first counter, a second counter, and the nodeidentifier of the first database server, wherein each counter ismaintained by the first database server.
 8. A computer program product,comprising: a computer-readable storage medium having computer-readableprogram code embodied therewith, the computer-readable program codecomprising: computer-readable program code configured to receive arequest to add a table to a replication domain, such that the table isreplicated from a first database server to at least a second databaseserver, wherein the table includes at least a first record;computer-readable program code configured to, responsive to the request,generate a key value for the first record on the first database server;computer-readable program code configured to, subsequent to receivingthe request, receive a second record to be inserted into the table onthe first database server; and computer-readable program code configuredto generate a key value for the second record on the first databaseserver; wherein each generated key value is unique across thereplication domain, wherein a column is added to the table to store thegenerated key values, and wherein the column is added without requiringexclusive access to the table.
 9. The computer program product of claim8, wherein the key value for the first record on the first databaseserver is generated based on a table identifier of the table, a rowidentifier of the first record, and a node identifier of the firstdatabase server.
 10. The computer program product of claim 9, whereinthe key value for the second record on the first database server isgenerated based on a first counter, a second counter, and the nodeidentifier of the first database server, and wherein each counter ismaintained by the first database server.
 11. The computer programproduct of claim 10, wherein the key value for the first record isgenerated by concatenating the table identifier, the row identifier, andthe node identifier, and wherein the key value for the second record isgenerated by concatenating the first counter, the second counter, andthe node identifier.
 12. The computer program product of claim 11,wherein the row identifier includes a page number component and a slotnumber component, wherein the slot number component contains a non-zerovalue, wherein the key value for the second record contains one or morebits corresponding to the slot number component and containing a zerovalue to prevent collision with any existing record in the table,wherein the column comprises a shadow column, and wherein the column isadded via an in-place alter command.
 13. The computer program product ofclaim 8, wherein the first database server is configured to incrementthe first counter upon a first period of time elapsing, and wherein thefirst database server is further configured to increment the secondcounter upon a row being inserted into the first database server,wherein the first counter is logged upon a second period of timeelapsing, and wherein upon restarting the first database server, thelogged first counter is retrieved and increased by at least the secondperiod of time divided by the first period of time, to prevent collisionwith any key value generated prior to restarting the first databaseserver.
 14. The computer program product of claim 8, wherein a key valueis generated for each existing record in the table, based on a tableidentifier of the table, a row identifier of the respective, existingrecord, and a node identifier of the first database server, and whereina key value is generated for each new record to be inserted into thetable, based on a first counter, a second counter, and the nodeidentifier of the first database server, wherein each counter ismaintained by the first database server.
 15. A system, comprising: oneor more computer processors; a memory containing a program, which whenexecuted by the one or more computer processors is configured to performan operation comprising: receiving a request to add a table to areplication domain, such that the table is replicated from a firstdatabase server to at least a second database server, wherein the tableincludes at least a first record; responsive to the request, generatinga key value for the first record on the first database server;subsequent to receiving the request, receiving a second record to beinserted into the table on the first database server; and generating akey value for the second record on the first database server; whereineach generated key value is unique across the replication domain,wherein a column is added to the table to store the generated keyvalues, and wherein the column is added without requiring exclusiveaccess to the table.
 16. The system of claim 15, wherein the key valuefor the first record on the first database server is generated based ona table identifier of the table, a row identifier of the first record,and a node identifier of the first database server.
 17. The system ofclaim 16, wherein the key value for the second record on the firstdatabase server is generated based on a first counter, a second counter,and the node identifier of the first database server, and wherein eachcounter is maintained by the first database server.
 18. The system ofclaim 17, wherein the key value for the first record is generated byconcatenating the table identifier, the row identifier, and the nodeidentifier, and wherein the key value for the second record is generatedby concatenating the first counter, the second counter, and the nodeidentifier.
 19. The system of claim 18, wherein the row identifierincludes a page number component and a slot number component, whereinthe slot number component contains a non-zero value, wherein the keyvalue for the second record contains one or more bits corresponding tothe slot number component and containing a zero value to preventcollision with any existing record in the table, wherein the columncomprises a shadow column, and wherein the column is added via anin-place alter command.
 20. The system of claim 15, wherein the firstdatabase server is configured to increment the first counter upon afirst period of time elapsing, and wherein the first database server isfurther configured to increment the second counter upon a row beinginserted into the first database server, wherein the first counter islogged upon a second period of time elapsing, and wherein uponrestarting the first database server, the logged first counter isretrieved and increased by at least the second period of time divided bythe first period of time, to prevent collision with any key valuegenerated prior to restarting the first database server.